package com.sqlcheck.service;

import com.sqlcheck.entity.User;

/**
 * 用户上下文服务
 * 提供当前用户信息和权限检查
 */
public interface UserContextService {

    /**
     * 获取当前用户信息
     * 
     * @param userId 用户ID
     * @return 用户信息
     */
    User getCurrentUser(Long userId);

    /**
     * 检查用户是否为管理员
     * 
     * @param userId 用户ID
     * @return 是否为管理员
     */
    boolean isAdmin(Long userId);

    /**
     * 检查用户是否有权限访问指定任务
     * 
     * @param userId     用户ID
     * @param taskUserId 任务创建者ID
     * @return 是否有权限
     */
    boolean canAccessTask(Long userId, Long taskUserId);

    /**
     * 获取用户的数据过滤条件
     * 如果是管理员，返回null（无需过滤）
     * 如果是普通用户，返回用户ID
     * 
     * @param userId 用户ID
     * @return 数据过滤的用户ID，null表示管理员无需过滤
     */
    Long getDataFilterUserId(Long userId);
}